Next: Various File Formats, Previous: Extended Interactive, Up: Gnus Reference Guide [Contents][Index]
While Gnus runs under Emacs, XEmacs and Mule, I decided that one of the platforms must be the primary one. I chose Emacs. Not because I don’t like XEmacs or Mule, but because it comes first alphabetically.
This means that Gnus will byte-compile under Emacs with nary a warning, while XEmacs will pump out gigabytes of warnings while byte-compiling. As I use byte-compilation warnings to help me root out trivial errors in Gnus, that’s very useful.
I’ve also consistently used Emacs function interfaces,
but have used Gnusey aliases for the functions. To take an
example: Emacs defines a run-at-time function while
XEmacs defines a start-itimer function. I then
define a function called gnus-run-at-time that takes
the same parameters as the Emacs run-at-time. When
running Gnus under Emacs, the former function is just an alias
for the latter. However, when running under XEmacs, the former is
an alias for the following function:
(defun gnus-xmas-run-at-time (time repeat function &rest args)
(start-itimer
"gnus-run-at-time"
`(lambda ()
(,function ,@args))
time repeat))
This sort of thing has been done for bunches of functions.
Gnus does not redefine any native Emacs functions while running
under XEmacs—it does this defalias thing with
Gnus equivalents instead. Cleaner all over.
In the cases where the XEmacs function interface was obviously
cleaner, I used it instead. For example
gnus-region-active-p is an alias for
region-active-p in XEmacs, whereas in Emacs it is a
function.
Of course, I could have chosen XEmacs as my native platform and done mapping functions the other way around. But I didn’t. The performance hit these indirections impose on Gnus under XEmacs should be slight.
Next: Various File Formats, Previous: Extended Interactive, Up: Gnus Reference Guide [Contents][Index]